package persistence.model;

import persistence.dao.SemestreDAO;
import persistence.db.DataSet;

public class Semestre extends AbstractModel{

	private String nomSemestre;
	private String debutSemestre;
	private String finSemestre;
	private int nbGroupe;
	private int groupePromo;
	private int idAnneeEtude; 
	private DataSet ue;
	private DataSet groupe;
	
	/**
	 * Constructeur d'un semestre
	 */
	public Semestre(){
		setDao(new SemestreDAO(this));
	}
	
	/**
	 * Constructeur d'un semestre
	 * @param id identifiant d'un semestre
	 */
	public Semestre(int id) {
		this();
		setId(id);
	}
	
	/**
	 * Constructeur d'un semestre
	 * @param id identifiant d'un semestre
	 * @param nom nom du semestre
	 * @param debut date de début du semestre
	 * @param fin date de fin du semestre
	 * @param nbGp nombre de groupe composant le semestre
	 * @param gpPromo identifiant du groupe de promo
	 * @param idae identifiant de l'annee d'etude
	 * @param ueSet 
	 * @param gpSet
	 */
	public Semestre(int id, String nom, String debut, String fin, int nbGp, int gpPromo, int idae, DataSet ueSet, DataSet groupeSet) {
		this(id);
		nomSemestre = nom;
		debutSemestre = debut;
		finSemestre = fin;
		nbGroupe = nbGp;
		groupePromo = gpPromo;
		idAnneeEtude = idae;
		ue = ueSet;
		groupe = groupeSet;
	}
	
	public String getNomSemestre() {
		return nomSemestre;
	}
	
	public void setNomSemestre(String nomSemestre) {
		this.nomSemestre = nomSemestre;
	}

	public String getDebutSemestre() {
		return debutSemestre;
	}

	public void setDebutSemestre(String debutSemestre) {
		this.debutSemestre = debutSemestre;
	}

	public String getFinSemestre() {
		return finSemestre;
	}

	public void setFinSemestre(String finSemestre) {
		this.finSemestre = finSemestre;
	}
	
	public int getIdAnneeEtude() {
		return idAnneeEtude;
	}

	public void setIdAnneeEtude(int idAnneeEtude) {
		this.idAnneeEtude = idAnneeEtude;
	}

	public DataSet getUe() {
		return ue;
	}
	public void setUe(DataSet ue) {
		this.ue = ue;
	}

	public DataSet getGroupe() {
		return groupe;
	}	
	public void setGroupe(DataSet groupe) {
		this.groupe = groupe;
	}

	public int getNbGroupe() {
		return nbGroupe;
	}

	public void setNbGroupe(int nbGroupe) {
		this.nbGroupe = nbGroupe;
	}

	public int getGroupePromo() {
		return groupePromo;
	}

	public void setGroupePromo(int groupePromo) {
		this.groupePromo = groupePromo;
	}

	public AnneeEtude getAnneeEtude() {
		return (AnneeEtude) AnneeEtude.all().get(idAnneeEtude);
	}

	public static DataSet all() {
		SemestreDAO semestreDAO = new SemestreDAO();
		return semestreDAO.all();
	}

}
